package com.softtown.modules.organization.service;

import com.softtown.common.page.PageData;
import com.softtown.common.service.BaseService;
import com.softtown.modules.organization.dto.CompOrgPosnDTO;
import com.softtown.modules.organization.entity.CompOrgPosnEntity;
import com.softtown.modules.organization.vo.CompOrgPosnVO;

import java.util.List;
import java.util.Map;

/**
 * @version v1.0
 * @ProjectName: softtown-aioffice
 * @ClassName: CompOrgPosnService
 * @Description: 公司-岗位Service接口层
 * @Author: fuming
 * @Date: 2019/6/5 10:49
 */
public interface CompOrgPosnService extends BaseService<CompOrgPosnEntity> {

    /**
     * 根据公司所属的ID来获取相应的所有岗位相关信息
     * @param companyId
     * @return java.util.List<com.softtown.modules.organization.vo.CompOrgPosnVO>
     * @Author fuming
     * @Date 2020/5/26 16:47
     */
    List<CompOrgPosnVO> getPosnListByCompId(Long companyId);

/**
 * @Author: Ding Ya Yong
 * @Description: TODO 
 * @Date: 2021/12/3 19:39
 * @Param: [companyId]
 * @return: java.util.List<com.softtown.modules.organization.vo.CompOrgPosnVO>
 **/
    List<CompOrgPosnVO> getCompExecPosn(Long companyId);

    /**
     * 添加岗位
     * @param compOrgPosnDTO
     * @return void
     * @Author fuming
     * @Date 2020/5/26 16:48
     */
    void addPosition(CompOrgPosnDTO compOrgPosnDTO);

    /**
     * 岗位修改
     * @param compOrgPosnDTO
     * @return void
     * @Author fuming
     * @Date 2020/5/26 16:48
     */
    void updatePosnInfos(CompOrgPosnDTO compOrgPosnDTO);

    /**
     * 根据id去找出相对应的岗位信息
     * @param id
     * @return com.softtown.modules.organization.vo.CompOrgPosnVO
     * @Author fuming
     * @Date 2020/5/26 16:49
     */
    CompOrgPosnVO getPosnInfoById(Long id);

    /**
     * 通过id找出相对应的岗位信息
     * @param id
     * @return com.softtown.modules.organization.entity.CompOrgPosnEntity
     * @Author fuming
     * @Date 2020/5/26 16:49
     */
    CompOrgPosnEntity getPosnById(Long id);

    /**
     * 分页
     * @param params
     * @return com.softtown.common.page.PageData<com.softtown.modules.organization.vo.CompOrgPosnVO>
     * @Author fuming
     * @Date 2020/5/26 16:50
     */
    PageData<CompOrgPosnVO> page(Map<String, Object> params);

    /**
     * 通过id找出相对应的岗位信息
     * @param id
     * @return com.softtown.modules.organization.vo.CompOrgPosnVO
     * @Author fuming
     * @Date 2020/5/26 16:52
     */
    CompOrgPosnVO getPositionInfoById(Long id);

    /**
     * 岗位删除
     * @param id
     * @return void
     * @Author fuming
     * @Date 2020/5/26 16:52
     */
    void deletePosition(Long id);

    /**
     * 岗位激活或禁用
     * @param id
     * @return void
     * @Author fuming
     * @Date 2020/5/26 16:53
     */
    void activeOrgPosn(Long id);

    /**
     * 根据公司id找出对应的岗位
     *
     * @param compId
     * @return List<CompOrgPosnEntity>
     * @author Dingyayong
     * @date 2019/9/25 10:57
     */
    List<CompOrgPosnEntity> getFindPosnByCompId(Long compId);
}
